import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';

// 程序入口，启动 Flutter 应用
void main() {
  runApp(const MyApp());
}

// 应用的主类，继承 StatelessWidget，因为应用本身不管理状态
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '随机单词生成器', // ：标题为中文，简洁明了
      theme: ThemeData(
        primarySwatch: Colors.blue, // ：添加主题色
        textTheme: const TextTheme(
          bodyMedium: TextStyle(color: Colors.black87), // ：设置默认文字样式
        ),
      ),
      home: const HomePage(), // 使用独立的 HomePage 类
    );
  }
}

// 主页面，展示随机单词生成器的 UI
class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('随机单词生成器'), // ：标题为中文
        centerTitle: true, // ：标题居中显示
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              '随机生成英文单词对:', // ：文字稍作调整
              style: TextStyle(
                fontSize: 22,
                fontWeight: FontWeight.w500,
              ), // ：字体样式
            ),
            const SizedBox(height: 16), // ：增加间距
            RandomWordsWidget(),
          ],
        ),
      ),
    );
  }
}

// 随机单词显示组件，使用 StatefulWidget 管理单词状态
class RandomWordsWidget extends StatefulWidget {
  const RandomWordsWidget({super.key});

  @override
  State<RandomWordsWidget> createState() => _RandomWordsWidgetState();
}

class _RandomWordsWidgetState extends State<RandomWordsWidget> {
  late final WordPair _wordPair; // 使用 late 初始化单词对

  @override
  void initState() {
    super.initState();
    _wordPair = WordPair.random(); // 在初始化时生成随机单词对
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.symmetric(
        horizontal: 20.0,
        vertical: 10.0,
      ), // ：调整内边距
      child: Text(
        _wordPair.asPascalCase, // 显示 PascalCase 格式的单词对
        style: const TextStyle(
          fontSize: 30, // ：字体大小略减小
          fontWeight: FontWeight.bold,
          color: Colors.blueAccent, // ：添加文字颜色
        ),
      ),
    );
  }
}
